/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.echarts.model.style</p>
 * <p>File:TreemapStyle.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 Jun 3, 2019 2:21:37 PM
 */
package com.cesgroup.zw.spring.boot.echarts.model.style;

import java.io.Serializable;
import java.math.BigDecimal;

import com.cesgroup.zw.spring.boot.echarts.enums.ColorMapping;
import com.cesgroup.zw.spring.boot.echarts.model.series.Emphasis;
import com.cesgroup.zw.spring.boot.supports.util.math.BigDecimalUtil;

import lombok.Data;

/**
 * <p>描述: </p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date Jun 3, 2019 2:21:37 PM
 * @version 1.0.2019
 */
@Data @SuppressWarnings("serial")
public class TreemapStyle implements Serializable {

	/** treemap 中支持对数据其他维度进行视觉映射，[default: 0] */
	private Integer visualDimension;
	
	/** 当前层级的最小 value 值。如果不设置则自动统计，[default: null] */
	private Integer visualMin;
	
	/** 当前层级的最大 value 值。如果不设置则自动统计，[default: null] */
	private Integer visualMax;
	
	/** 表示同一层级的节点的“颜色”选取列表 */
	private String[] color;
	
	/** 表示同一层级的节点的“颜色透明度”选取范围。数值范围 0 ~ 1 */
	private BigDecimal[] colorAlpha;
	
	/** 表示同一层级的节点的“颜色饱和度”选取范围。数值范围 0 ~ 1 */
	private BigDecimal[] colorSaturation;
	
	/** 表示同一层级节点，在颜色列表中（参见 color 属性）选择时，按照什么来选择，[default: 'index'] */
	private ColorMapping colorMappingBy;
	
	/** 如果某个节点的矩形的面积，小于这个数值（单位：px平方），这个节点就不显示，[default: 10] */
	private Integer	visibleMin;
	
	/** 如果某个节点的矩形面积，小于这个数值（单位：px平方），则不显示这个节点的子节点，[default: null] */
	private Integer childrenVisibleMin;
	
	/** 每个矩形中，文本标签的样式 */
	private LabelStyle label;
	
	/** 用于显示矩形的父节点的标签 */
	private LabelStyle upperLabel;
	
	/** 标签样式 */
	private ItemStyle itemStyle;
	
	/** 高亮样式 */
	private Emphasis emphasis;
	
	public void setColorAlpha(int start, int end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorAlpha(double start, double end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorAlpha(int start, double end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorAlpha(double start, int end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorSaturation(int start, int end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorSaturation(double start, double end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorSaturation(int start, double end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
	
	public void setColorSaturation(double start, int end) {
		this.colorAlpha = new BigDecimal[] { BigDecimalUtil.valueOf(start), BigDecimalUtil.valueOf(end) };
	}
}
